package MyAnnotation;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class MyTest {


    public void method1(){
        System.out.println("正在执行 method1 方法");
    }

    @MyAnnotation
    public void method2(){
        System.out.println("正在执行 method2 方法");
    }

    public void method3(){
        System.out.println("正在执行 method3 方法");
    }

    @MyAnnotation
    public void method4(){
        System.out.println("正在执行 method4 方法");
    }

    public static void main(String[] args) throws Exception {
        //先获取class对象
        Class m = MyTest.class;

        //再获取该类中的全部方法，还需要创建对象
        MyTest myTest = new MyTest();
        Method[] methods = m.getDeclaredMethods();
        //遍历方法，查看是否被注释修饰
        for (Method method : methods) {
            if (method.isAnnotationPresent(MyAnnotation.class)){
                //如果有注释，则需要执行该方法
                method.invoke(myTest);
                System.out.println("已经在执行 :" + method.getName());
            }
        }

    }


}
